#ifndef CHESSBOARD_H
#define CHESSBOARD_H

#include <QWidget>
#include <QPainter>
#include <QMouseEvent>
#include <QDebug>
#include <QPoint>
#include <QMessageBox>
#include <QTcpSocket>
#include <QJsonDocument>
#include <QJsonObject>

enum Piece
{
    EMPTY,
    BLACK,
    WHITE
};

class chessBoard : public QWidget
{
    Q_OBJECT
public:
    explicit chessBoard(QWidget *parent = nullptr);

    // 初始化棋盘
    void initBoard();
    // 绘制棋盘和棋子
    void paintEvent(QPaintEvent* e);
    // 下棋点击事件
    void mousePressEvent(QMouseEvent* event);
    // 下棋
    void playChess(int x, int y);
    // 将像素点坐标转换为棋盘坐标
    QPoint transformCoordinate(int x, int y);
    // 获取颜色
    void getColor(QJsonObject obj);
    // 发送坐标
    void sendCoordinate(int x, int y);
    // 读取数据
    void readData();
    // 发送数据
    void sendData();
    // 同步数据
    void syncChess(int x, int y, Piece clr);
    // 判断输赢
    int _judge(int row, int col, int rowd, int cold, Piece color);
    int judge(int row, int col, Piece color);
signals:
    // 显示棋子颜色
    void showChessColor(Piece color);
private:
    Piece board[15][15];
    Piece color;
    QTcpSocket* tcpsock;
};

#endif // CHESSBOARD_H
